home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / 3DTOSHI2.ZIP / mpgfx / include / gfxgraf.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-20  |  5.9 KB  |  173 lines

  1.  
  2. // gfxgraf.h
  3. //
  4. // Copyright (c) 1995 by Toshiaki Tsuji, all rights reserved.
  5.  
  6. #ifndef __GFXGRAFIX_H__
  7. #define __GFXGRAFIX_H__
  8.  
  9. #include "stdgfx.h"
  10. #include "gfxanim.h"
  11. #include "gfxbmp.h"
  12. #include "gfxcltbl.h"
  13. #include "gfxddraw.h"
  14. #include "gfxflic.h"
  15. #include "gfxgdi.h"
  16. #include "gfxgif.h"
  17. #include "gfxgpi.h"
  18. #include "gfxinput.h"
  19. #include "gfxllist.h"
  20. #include "gfxtimer.h"
  21. #include "gfxpcx.h"
  22. #include "gfxvesa.h"
  23. #include "gfxxwin.h"
  24.  
  25. // Image File Type
  26. #define UNKNOWN   0
  27. #define PCXFILE   1
  28. #define GIFFILE   2
  29. #define BMPFILE   3
  30.  
  31. // Palette File Type
  32. #define PAL_MSWIN 1   // MS-Windows Palette Format
  33. #define PAL_PSP   2   // Paint Shop Pro Palette Format
  34. #define PAL_COREL 3   // Corel Draw Palette Format
  35.  
  36. // Fading Palette Direction
  37. #define PAL_FADE_IN  1
  38. #define PAL_FADE_OUT 2
  39.  
  40. // FLIC Player
  41. #define FLIC_NEXT      ((LONG)1<<0)
  42. #define FLIC_LOOP      ((LONG)1<<1)
  43. #define FLIC_NOADVANCE ((LONG)1<<2)
  44. #define FLIC_ALL       ((LONG)1<<3)
  45.  
  46. typedef BOOLEAN (*FLICCallback) ( FLICFILE *Flic );
  47.  
  48. struct XYPOINT
  49.   {
  50.     LONG x,y;
  51.     LONG u,v;
  52.   }; // End of XYPOINT
  53.  
  54. struct POLYGON
  55.   {
  56.     LONG NumPoints;
  57.     XYPOINT *Points;
  58.  
  59.     POLYGON ();
  60.     ~POLYGON ();
  61.  
  62.     VOID CreatePoints ( LONG Num );
  63.     VOID DestroyPoints ();
  64.   }; // End of POLYGON
  65.  
  66. struct EDGETABLE
  67.   {
  68.     LONG Top;
  69.     LONG Height;
  70.     XYPOINT *Left;
  71.     XYPOINT *Right;
  72.  
  73.     EDGETABLE ();
  74.     ~EDGETABLE ();
  75.   }; // End of EDGETABLE
  76.  
  77. // Graphics Interface
  78. class GRAFIX : public DCIClass
  79.   {
  80.     protected :
  81.       DISPLAYDRIVER *DisplayDriver;
  82.       LONG MagH,MagV,DivH,DivV;
  83.  
  84.       INT GetImageFileType ( FILEHANDLE f );
  85.       BOOLEAN ClipRect ( RECTANGLE *ViewPort, LONG *Sx, LONG *Sy, LONG *Wd, LONG *Ht );
  86.       BOOLEAN ClipDest ( RECTANGLE *ViewPort, LONG *Sx, LONG *Sy, LONG *Wd, LONG *Ht,
  87.                          LONG *Cx, LONG *Cy );
  88.       LONG GetCode ( RECTANGLE Rect, LONG x, LONG y );
  89.       BOOLEAN ClipLine ( RECTANGLE Rect, LONG *x1, LONG *y1, LONG *x2, LONG *y2 );
  90.       VOID DrawEllipsePoint ( IMAGE *Dest, LONG Cx, LONG Cy, LONG x, LONG y );
  91.       VOID DrawHorizLine ( IMAGE *Dest, LONG x1, LONG x2, LONG y );
  92.       VOID FillEllipsePoint ( IMAGE *Dest, LONG Cx, LONG Cy, LONG x, LONG y );
  93.       VOID FindIntersect ( XYPOINT *In, XYPOINT *Out, XYPOINT *I, RECTANGLE ViewPort, LONG Code );
  94.       VOID CreateEdgeTable ( POLYGON *Poly, EDGETABLE *EdgeTable );     
  95.       VOID ClipPolygon ( POLYGON *SrcPoly, POLYGON *ClipPoly, RECTANGLE ViewPort );
  96.  
  97.     public :
  98.       COLOR FGColor;
  99.       COLOR BGColor;
  100.  
  101.       GRAFIX ();
  102.       virtual ~GRAFIX ();
  103.  
  104.       virtual BOOLEAN Init ();
  105.       virtual VOID DeInit ();
  106.  
  107.       BOOLEAN SetDisplay ( DISPLAYDATA *DataPtr );
  108.       VOID ResetDisplay ();
  109.       VOID ClearDisplay ( HDISPLAY hDisplay, LONG Color );
  110.       VOID SetScaleFactor ( LONG MagH, LONG DivH, LONG MagV, LONG DivV );                      
  111.  
  112.       // Image Functions
  113.       VOID CopyImage ( IMAGE *Src, LONG Sx, LONG Sy, LONG Wd, LONG Ht,
  114.                        IMAGE *Dest, LONG Cx, LONG Cy );
  115.       VOID ScaleImage ( IMAGE *Src, LONG Sx, LONG Sy, LONG Wd, LONG Ht,
  116.                         IMAGE *Dest, LONG Cx, LONG Cy );
  117.       VOID RotateImage ( IMAGE *Src, LONG Sx, LONG Sy, LONG Wd, LONG Ht,
  118.                          LONG CenterX, LONG CenterY, float Angle,
  119.                          IMAGE *Dest, LONG Cx, LONG Cy );
  120.       VOID DisplayImage ( HDISPLAY hDisplay, IMAGE *Image, LONG Sx, LONG Sy,
  121.                           LONG Wd, LONG Ht, LONG Cx, LONG Cy );
  122.       VOID ConvertImage ( IMAGE *Image, COLORTABLE *MatchTable );
  123.       VOID AdjustImageSize ( IMAGE *Image, LONG Wd, LONG Ht );
  124.       BOOLEAN LoadImage ( STRING FileName, IMAGE *Image, RGBPALETTE *Pal );
  125.       BOOLEAN SaveImage ( STRING FileName, SHORT ImageType, IMAGE *Image,
  126.                           LONG Sx, LONG Sy, LONG Wd, LONG Ht, RGBPALETTE *Pal );
  127.  
  128.       // Animation Functions
  129.       VOID PlayFLIC ( FLICFILE *Flic, RECTANGLE Region, LONG Cx, LONG Cy,
  130.                       LONG StartFrame, LONG EndFrame, LONG Flags, FLICCallback Callback ); 
  131.       
  132.       // Palette Functions
  133.       VOID SetPalette ( HDISPLAY hDisplay, RGBPALETTE *Pal );
  134.       VOID GetPalette ( HDISPLAY hDisplay, RGBPALETTE *Pal );
  135.       VOID ClearPalette ( HDISPLAY hDisplay, BYTE R, BYTE G, BYTE B );
  136.       VOID FadePalette ( HDISPLAY hDisplay, RGBPALETTE *Pal,
  137.                          LONG Direction, LONG NumSteps );
  138.       BOOLEAN SavePalette ( STRING FileName, RGBPALETTE *Pal, LONG PalFormat );
  139.       BOOLEAN LoadPalette ( STRING FileName, RGBPALETTE *Pal );
  140.  
  141.       // Drawing Functions
  142.       VOID DrawPixel ( IMAGE *Dest, LONG x, LONG y );
  143.       VOID DrawPixel ( HDISPLAY hDisplay, LONG x, LONG y );
  144.       VOID DrawLine ( IMAGE *Dest, LONG x1, LONG y1, LONG x2, LONG y2 );
  145.       VOID DrawLine ( HDISPLAY hDisplay, LONG x1, LONG y1, LONG x2, LONG y2 );
  146.       VOID DrawRect ( IMAGE *Dest, LONG x1, LONG y1, LONG x2, LONG y2 );
  147.       VOID DrawRect ( HDISPLAY hDisplay, LONG x1, LONG y1, LONG x2, LONG y2 );
  148.       VOID FillRect ( IMAGE *Dest, LONG x1, LONG y1, LONG x2, LONG y2 );
  149.       VOID FillRect ( HDISPLAY hDisplay, LONG x1, LONG y1, LONG x2, LONG y2 );
  150.       VOID DrawEllipse ( IMAGE *Dest, LONG Cx, LONG Cy, LONG Rx, LONG Ry );
  151.       VOID DrawEllipse ( HDISPLAY hDisplay, LONG Cx, LONG Cy, LONG Rx, LONG Ry );
  152.       VOID FillEllipse ( IMAGE *Dest, LONG Cx, LONG Cy, LONG Rx, LONG Ry );
  153.       VOID FillEllipse ( HDISPLAY hDisplay, LONG Cx, LONG Cy, LONG Rx, LONG Ry );
  154.       VOID DrawPolygon ( IMAGE *Dest, POLYGON *Poly );
  155.       VOID FillPolygon ( IMAGE *Dest, POLYGON *Poly );
  156.       VOID DrawText ( HDISPLAY hDisplay, STRING Text, LONG x, LONG y );
  157.  
  158.       LONG GetWidth ( HDISPLAY hDisplay );
  159.       LONG GetHeight ( HDISPLAY hDisplay );
  160.  
  161.       VOID WaitForRetrace ( LONG Count );
  162.       VOID WaitForRetrace ();
  163.       VOID WaitForRetraceEnd ();
  164.   }; // End of GRAFIX
  165.  
  166. extern GRAFIX Grafix;
  167.  
  168. #endif
  169.  
  170.  
  171.  
  172.  
  173.